//
//  PUIWebAPI.m
//  browserHD
//
//  Created by kevinxuls on 13-5-13.
//  Copyright (c) 2013年 Terry. All rights reserved.
//

#import "PUIWebAPI.h"

@implementation PUIWebAPI

+ (PUIWebAPI *)defaultKit {
    static PUIWebAPI *defaultKit;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        defaultKit = [[PUIWebAPI alloc] init];
    });
    return defaultKit;
}

- (id)init {
    self = [super init];
    if (self) {
        self.type = [[NSString alloc] initWithString:NSStringFromClass([self class])];
        
        self.selectors = @[@"X2RlZmluZTo=",                                                             //0//-(void)_define:(id)define;
                           @"Y2FuUGVyZm9ybUFjdGlvbjp3aXRoU2VuZGVyOg==",                                 //1//-(BOOL)canPerformAction:(SEL)action withSender:(id)sender;
                           @"X3NldERyYXdJbldlYlRocmVhZDo=",                                             //2//-(void)_setDrawInWebThread:(BOOL)webThread;
                           @"X3NldFdlYlNlbGVjdGlvbkVuYWJsZWQ6",                                         //3//-(void)_setWebSelectionEnabled:(BOOL)enabled;
                           @"X3NldERyYXdzQ2hlY2tlcmVkUGF0dGVybjo=",                                     //4//-(void)_setDrawsCheckeredPattern:(BOOL)pattern;
                           @"X3NldE92ZXJyaWRlc09yaWVudGF0aW9uQ2hhbmdlRXZlbnRIYW5kbGluZzo=",             //5//-(void)_setOverridesOrientationChangeEventHandling:(BOOL)handling;
                           @"X3BkZlZpZXdIYW5kbGVy",                                                     //6//-(id)_pdfViewHandler;
                           @"X3Njcm9sbFZpZXc=",                                                         //7//-(id)_scrollView;
                           @"X2RvY3VtZW50Vmlldw==",                                                     //8//-(id)_documentView;
                           @"X2Jyb3dzZXJWaWV3",                                                         //9//-(id)_browserView;
                           @"c2F2ZUdlb2xvY2F0aW9uOg==",                                                 //10//-(void)saveGeolocation:(id)geolocation;
                           @"bmV3U25hcHNob3RXaXRoUmVjdDo=",                                             //11//-(CGImageRef)newSnapshotWithRect:(CGRect)rect;
                           @"Y3JlYXRlU25hcHNob3RXaXRoUmVjdDo=",                                         //12//-(CGImageRef)createSnapshotWithRect:(CGRect)rect;
                           @"d2ViVmlldzpkaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZTo=",             //13//-(void)webView:(id)view didChangeLocationWithinPageForFrame:(id)frame;
                           @"d2ViVmlldzpyZXNvdXJjZTpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlOmZvckRhdGFTb3VyY2U6",
                           //14//-(BOOL)webView:(id)view resource:(id)resource canAuthenticateAgainstProtectionSpace:(id)space forDataSource:(id)dataSource;
                           @"d2ViVmlldzpyZXNvdXJjZTpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpmb3JEYXRhU291cmNlOg==",
                           //15//-(void)webView:(id)view resource:(id)resource didCancelAuthenticationChallenge:(id)challenge fromDataSource:(id)dataSource;
                           @"d2ViVmlldzpyZXNvdXJjZTpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Zm9yRGF0YVNvdXJjZTo=",
                           //16//-(void)webView:(id)view resource:(id)resource didReceiveAuthenticationChallenge:(id)challenge fromDataSource:(id)dataSource;
                           @"d2ViVmlldzpyZXNvdXJjZTpkaWRGYWlsTG9hZGluZ1dpdGhFcnJvcjpmb3JEYXRhU291cmNlOg==",
                           //17//-(void)webView:(id)view resource:(id)resource didFailLoadingWithError:(id)error fromDataSource:(id)dataSource;
                           @"d2ViVmlldzpyZXNvdXJjZTpkaWRGaW5pc2hMb2FkaW5nRnJvbURhdGFTb3VyY2U6Zm9yRGF0YVNvdXJjZTo=",
                           //18//-(void)webView:(id)view resource:(id)resource didFinishLoadingFromDataSource:(id)dataSource;
                           @"d2ViVmlldzppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Q6ZnJvbURhdGFTb3VyY2U6",
                           //19//-(id)webView:(id)view identifierForInitialRequest:(id)initialRequest fromDataSource:(id)dataSource;
                           @"d2ViVmlldzpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOmZyYW1lOmxpc3RlbmVyOg==",
                           //20//-(void)webView:(id)view decidePolicyForGeolocationRequestFromOrigin:(id)origin frame:(id)frame listener:(id)listener;
                           @"d2ViVmlldzpydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0OmRlZmF1bHRUZXh0OmluaXRpYXRlZEJ5RnJhbWU6",
                           //21//-(id)webView:(id)view runJavaScriptTextInputPanelWithPrompt:(id)prompt defaultText:(id)text initiatedByFrame:(id)frame;
                           @"d2ViVmlldzpydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTo=",
                           //22//-(BOOL)webView:(id)view runJavaScriptConfirmPanelWithMessage:(id)message initiatedByFrame:(id)frame;
                           @"d2ViVmlldzpydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6",
                           //23//-(void)webView:(id)view runJavaScriptAlertPanelWithMessage:(id)message initiatedByFrame:(id)frame;
                           @"d2ViVmlld0Nsb3NlOg==",                                                     //24//-(void)webViewClose:(id)close;
                           @"bW9kYWxWaWV3OmRpZERpc21pc3NXaXRoQnV0dG9uSW5kZXg6",                         //25//-(void)modalView:(id)view didDismissWithButtonIndex:(int)buttonIndex;
                           @"d2ViVmlldzpkaWRGaXJzdExheW91dEluRnJhbWU6",                                 //26//-(void)webView:(id)view didFirstLayoutInFrame:(id)frame;
                           @"d2ViVmlldzpkaWRGYWlsTG9hZFdpdGhFcnJvcjpmb3JGcmFtZTo=",                     //27//-(void)webView:(id)view didFailLoadWithError:(id)error forFrame:(id)frame;
                           @"d2ViVmlldzpkaWRGaW5pc2hMb2FkRm9yRnJhbWU6",                                 //28//-(void)webView:(id)view didFinishLoadForFrame:(id)frame;
                           @"d2ViVmlldzpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yOmZvckZyYW1lOg==",     //29//-(void)webView:(id)view didFailProvisionalLoadWithError:(id)error forFrame:(id)frame;
                           @"d2ViVmlldzpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTo=",
                           //30//-(void)webView:(id)view didReceiveServerRedirectForProvisionalLoadForFrame:(id)frame;
                           @"d2ViVmlldzpkaWRDbGVhcldpbmRvd09iamVjdDpmb3JGcmFtZTo=",                     //31//-(void)webView:(id)view didClearWindowObject:(id)object forFrame:(id)frame;
                           @"d2ViVmlldzpyZXNvdXJjZTp3aWxsU2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpmcm9tRGF0YVNvdXJjZTo=",
                           //32//-(id)webView:(id)view resource:(id)resource willSendRequest:(id)request redirectResponse:(id)response fromDataSource:(id)dataSource;
                           @"d2ViVmlldzpjb25uZWN0aW9uUHJvcGVydGllc0ZvclJlc291cmNlOmRhdGFTb3VyY2U6",     //33//-(id)webView:(id)view connectionPropertiesForResource:(id)resource dataSource:(id)source;
                           @"d2ViVmlldzpkaWRSZWNlaXZlVGl0bGU6Zm9yRnJhbWU6",                             //34//-(void)webView:(id)view didReceiveTitle:(id)title forFrame:(id)frame;
                           @"d2ViVmlldzpkaWRDb21taXRMb2FkRm9yRnJhbWU6",                                 //35//-(void)webView:(id)view didCommitLoadForFrame:(id)frame;
                           @"d2ViVmlldzpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOg==",                 //36//-(void)webView:(id)view didStartProvisionalLoadForFrame:(id)frame;
                           @"X3VwZGF0ZVJlcXVlc3Q=",                                                     //37//-(void)_updateRequest;
                           @"d2ViVmlldzpwcmludEZyYW1lVmlldzo=",                                         //38//-(void)webView:(id)view printFrameView:(id)view2;
                           @"d2ViVmlldzpleGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5T3JpZ2luOnRvdGFsU3BhY2VOZWVkZWQ6",
                           //39//-(void)webView:(id)view exceededApplicationCacheOriginQuotaForSecurityOrigin:(id)securityOrigin totalSpaceNeeded:(unsigned)needed;
                           @"d2ViVmlldzpmcmFtZTpleGNlZWRlZERhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjpkYXRhYmFzZTo=",
                           //40//-(void)webView:(id)view frame:(id)frame exceededDatabaseQuotaForSecurityOrigin:(id)securityOrigin database:(id)database;
                           @"d2ViVmlldzp1bmFibGVUb0ltcGxlbWVudFBvbGljeVdpdGhFcnJvcjpmcmFtZTo=",         //41//-(void)webView:(id)view unableToImplementPolicyWithError:(id)error frame:(id)frame;
                           @"d2ViVmlldzpkZWNpZGVQb2xpY3lGb3JNSU1FVHlwZTpyZXF1ZXN0OmZyYW1lOmRlY2lzaW9uTGlzdGVuZXI6",
                           //42//-(void)webView:(id)view decidePolicyForMIMEType:(id)mimetype request:(id)request frame:(id)frame decisionListener:(id)listener;
                           @"d2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOnJlcXVlc3Q6ZnJhbWU6ZGVjaXNpb25MaXN0ZW5lcjo=",
                           //43//-(void)webView:(id)view decidePolicyForNavigationAction:(id)navigationAction request:(id)request frame:(id)frame decisionListener:(id)listener;
                           @"d2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb246cmVxdWVzdDpuZXdGcmFtZU5hbWU6ZGVjaXNpb25MaXN0ZW5lcjo=",
                           //44//-(void)webView:(id)view decidePolicyForNewWindowAction:(id)newWindowAction request:(id)request newFrameName:(id)name decisionListener:(id)listener;
                           @"X3JlcG9ydEVycm9yOg==",                                                     //45//-(void)_reportError:(id)error;
                           @"c2Nyb2xsVmlld1dhc1JlbW92ZWQ6",                                             //46//-(void)scrollViewWasRemoved:(id)removed;
                           @"c2Nyb2xsVmlld0RpZFNjcm9sbFRvVG9wOg==",                                     //47//-(void)scrollViewDidScrollToTop:(id)scrollView;
                           @"c2Nyb2xsVmlld0RpZEVuZERlY2VsZXJhdGluZzo=",                                 //48//-(void)scrollViewDidEndDecelerating:(id)scrollView;
                           @"c2Nyb2xsVmlld0RpZEVuZERyYWdnaW5nOndpbGxEZWNlbGVyYXRlOg==",                 //49//-(void)scrollViewDidEndDragging:(id)scrollView willDecelerate:(BOOL)decelerate;
                           @"X2RpZENvbXBsZXRlU2Nyb2xsaW5n",                                             //50//-(void)_didCompleteScrolling;
                           @"c2Nyb2xsVmlld1dpbGxCZWdpbkRyYWdnaW5nOg==",                                 //51//-(void)scrollViewWillBeginDragging:(id)scrollView;
                           @"c2Nyb2xsVmlld0RpZEVuZFpvb21pbmc6d2l0aFZpZXc6YXRTY2FsZTo=",                 //52//-(void)scrollViewDidEndZooming:(id)scrollView withView:(id)view atScale:(float)scale;
                           @"c2Nyb2xsVmlld0RpZFpvb206",                                                 //53//-(void)scrollViewDidZoom:(id)scrollView;
                           @"c2Nyb2xsVmlld1dpbGxCZWdpblpvb21pbmc6d2l0aFZpZXc6",                         //54//-(void)scrollViewWillBeginZooming:(id)scrollView withView:(id)view;
                           @"dmlld0Zvclpvb21pbmdJblNjcm9sbFZpZXc6",                                     //55//-(id)viewForZoomingInScrollView:(id)scrollView;
                           @"cmVzdG9yZVN0YXRlRnJvbUhpc3RvcnlJdGVtOmZvcldlYlZpZXc6",                     //56//-(void)restoreStateFromHistoryItem:(id)historyItem forWebView:(id)webView;
                           @"c2F2ZVN0YXRlVG9IaXN0b3J5SXRlbTpmb3JXZWJWaWV3Og==",                         //57//-(void)saveStateToHistoryItem:(id)historyItem forWebView:(id)webView;
                           @"d2ViVmlld01haW5GcmFtZURpZEZpbmlzaExvYWQ6",                                 //58//-(void)webViewMainFrameDidFinishLoad:(id)webViewMainFrame;
                           @"d2ViVmlld01haW5GcmFtZURpZENvbW1pdExvYWQ6",                                 //59//-(void)webViewMainFrameDidCommitLoad:(id)webViewMainFrame;
                           @"d2ViVmlld01haW5GcmFtZURpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEluRnJhbWU6", //60//-(void)webViewMainFrameDidFirstVisuallyNonEmptyLayoutInFrame:(id)webViewMainFrame;
                           @"X3VwZGF0ZVNjcm9sbGVyVmlld0ZvcklucHV0Vmlldzo=",                             //61//-(void)_updateScrollerViewForInputView:(id)inputView;
                           @"dmlldzpkaWRTZXRGcmFtZTpvbGRGcmFtZTo=",                                     //62//-(void)view:(id)view didSetFrame:(CGRect)frame oldFrame:(CGRect)frame3;
                           @"X2FwcGxpZXNFeGNsdXNpdmVUb3VjaFRvU3Vidmlld1RyZWU=",                         //63//-(BOOL)_appliesExclusiveTouchToSubviewTree;
                           @"c2V0T3BhcXVlOg==",                                                         //64//-(void)setOpaque:(BOOL)opaque;
                           @"X3VwZGF0ZU9wYXF1ZUFuZEJhY2tncm91bmRDb2xvcg==",                             //65//-(void)_updateOpaqueAndBackgroundColor;
                           @"X2ZyYW1lT3JCb3VuZHNDaGFuZ2Vk",                                             //66//-(void)_frameOrBoundsChanged;
                           @"X3Jlc2NhbGVEb2N1bWVudA==",                                                 //67//-(void)_rescaleDocument;
                           @"X2ZpbmlzaFJvdGF0aW9u",                                                     //68//-(void)_finishRotation;
                           @"X2JlZ2luUm90YXRpb24=",                                                     //69//-(void)_beginRotation;
                           @"c2l6ZVRoYXRGaXRzOg==",                                                     //70//-(CGSize)sizeThatFits:(CGSize)fits;
                           @"X3VwZGF0ZUNoZWNrZXJlZFBhdHRlcm4=",                                         //71//-(void)_updateCheckeredPattern;
                           @"X2lzRGVhbGxvY2F0aW5n",                                                     //72//-(BOOL)_isDeallocating;
                           @"X3RyeVJldGFpbg==",                                                         //73//-(BOOL)_tryRetain;
                           @"X3BvcHVsYXRlQXJjaGl2ZWRTdWJ2aWV3czo=",                                     //74//-(void)_populateArchivedSubviews:(id)subviews;
                           @"X3dlYlZpZXdDb21tb25Jbml0Og==",                                             //75//-(void)_webViewCommonInit:(BOOL)init;
                           @"X3VwZGF0ZVZpZXdTZXR0aW5ncw==",                                             //76//-(void)_updateViewSettings;
                           @"X3NldFJpY2hUZXh0UmVhZGVyVmlld3BvcnRTZXR0aW5ncw==",                         //77//-(void)_setRichTextReaderViewportSettings;
                           @"X3NldFNjYWxlc1BhZ2VUb0ZpdFZpZXdwb3J0U2V0dGluZ3M=",                         //78//-(void)_setScalesPageToFitViewportSettings;
                           @"X2RpZFJvdGF0ZTo=",                                                         //79//-(void)_didRotate:(id)rotate;
                           @"aXNFbGVtZW50QWNjZXNzaWJpbGl0eUV4cG9zZWRUb0ludGVyZmFjZUJ1aWxkZXI=",         //80//-(BOOL)isElementAccessibilityExposedToInterfaceBuilder;
                           @"X3ByaW50Rm9ybWF0dGVyQ2xhc3M=",                                             //81//-(Class)_printFormatterClass;
                           ];
    }
    return self;
}

@end
